上一篇說明了主題在需要安裝 plugins
外掛套件時需要配置的 theme/index.js
主題配置檔,但有時我們的需求並不是 plugins
可以解決的,需要更直接的在專案中引入模組時該怎麼辦呢?
theme/enhanceApp.js
的用處在 theme
資料夾中,還有一個約定檔案叫做 enhanceApp.js
這個檔案可以 export default
一個 function
來引入一些模組進入系統、設置路由 hooks 等等行為,具備了很強的功能。
這個 hooks function 被 VuePress 呼叫時會帶入一個物件作為參數,這個物件中具有 Vue
、 options
、 router
、 siteDate
四個重要的屬性,而我們在使用上習慣直接使用 JavaScript 的解構技巧來取出這些屬性進行使用:
export default ({
Vue, // VuePress 正在使用的 Vue 構造函數
options, // 附加到根實例的一些選項
router, // 當前應用的路由實例
siteData // 站點元數據
}) => {
// ...做一些其他的應用級別的優化
}
這邊就示範一下透過 theme/enhanceApp.js
來將 Vue 常用的 Element UI 這個 UI 套件安裝進專案中吧。
首先當然要先進行安裝: yarn add element-ui
然後就可以在檔案中將所需的模組引入,接著用解構出來的 Vue
實例來進行 Element UI 的安裝步驟就完成啦!
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
export default ({
Vue, // the version of Vue being used in the VuePress app
options, // the options for the root Vue instance
router, // the router instance for the app
siteData // site metadata
}) => {
Vue.use(ElementUI);
}
這邊說一下我實作上碰到的一個問題,在安裝完成並註冊 Element UI 後,畫面會變成一片空白,主控台會說:Cannot find module 'core-js/library/xxx' when import element-ui
原先以為是我註冊 component 的方式有誤,後來用關鍵字搜尋才找到一篇文章(來自中國 csdn 所以是簡體字)說明:原來是 core-js 相依的版本號不同出問題。也有提到官方 Github 上有一個 issue 是關於這件事的。
目前測試額外安裝一個套件可以解決:
yarn add async-validator@1.11.5
提供給有碰到相同問題的人參考。